/*
 * bsp_flash.c
 *
 *  Created on: 2025年4月8日
 *      Author: 22332
 */

#include "cola_init.h"
#include "cola_device.h"
#include "drv_flash.h"

static cola_device_t g_dev_flash;

static int bsp_flash_open(cola_device_t *dev, int oflag)
{
	(void)dev;
	(void)oflag;
	bsp_drv_flash_init();
    return 0;
}

static int bsp_flash_close(cola_device_t *dev)
{
	(void)dev;
    return 0;
}

static int bsp_flash_read(cola_device_t *dev, int pos, void *buffer, int size)
{
	(void)dev;
	#if 0
	if(pos == 0)
	{
	    return bsp_drv_get_A_part_vendor_data(buffer, size);;
	}
	else if(pos == 1)
	{
		return bsp_drv_get_B_part_vendor_data(buffer, size);;
	}
	else
	#endif
	{
		volatile uint8_t * p_address =(uint8_t *) pos;
		bsp_drv_flash_read_byte(p_address, (uint8_t *)buffer,  size);
		return 0;
	}
}

static int  bsp_flash_write(cola_device_t *dev, int pos, const void *buffer, int size)
{
	(void)dev;
	bsp_drv_flash_write(pos,(uint8_t *)buffer,size);
    return 0;
}


static struct cola_device_ops master_flash_Ops =
{
    .open   = bsp_flash_open,
    .close  = bsp_flash_close,
    .read   = bsp_flash_read,
    .write  = bsp_flash_write,
};

static void bsp_flash_configuration(void)
{
    g_dev_flash.name = "FLASH";
    g_dev_flash.dops = &master_flash_Ops;
    cola_device_register(&g_dev_flash);
}
register_initcall(bsp_flash_configuration);

